package cn.bonoon.kernel;
/**
 * <pre>
 * 系统自动生成的界面所需要的id全都由这个类来产生
 * 
 * 旧的方式是生成md5码，并且每一个界面、按钮、字段等都使用MD5码或组合。一来MD5码太长，二来生成浪费效率。
 * </pre>
 * @author jackson
 *
 */
public final class IdGenerator {
	
	private static long count_0 = 0, count_1 = 0;
	
	/**
	 * 固定值，这类是系统在启动的时候所需要的id，如：某个grid列表的id等。这个id分配后，在系统运行过程中就不再改变
	 * @return
	 */
	public static String fixed(){
		return "_" + count_0 ++;
	}
	
	public static String build(){
		return "_" + count_1 ++;
	}
	
	/**
	 * 可变的id，即在运行时所分配的id；理论上这个值将会无限制的增长上去，所以要对数值进行范围的判断
	 * @return
	 */
	public static String variable(){
		return "";
	}

	private final String prefix;
	private long count = 0;
	private String currentId;
	
	public IdGenerator(String prefix){
		this.prefix = prefix;
	}
	
	public String generator(){
		currentId = prefix + count++;
		return currentId;
	}
	
	public long getIndex(){
		return count;
	}
	
	public String getId(){
		return currentId;
	}
}
